package com.leetCode;

import java.util.Date;

/**
 * 给定 n 个整数，找出平均数最大且长度为 k 的连续子数组，并输出该最大平均数。
 *  实例：
 *      输入: [1,12,-5,-6,50,3], k = 4
 *      输出: 12.75
 *      解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
 */
public class test1 {
    public static void main(String[] args) {
        int[] nums = {1, 12, -5, -6, 50, 3};
        int k = 4;
        double maxAverage = findMaxAverage(nums, k);
        System.out.println("最大平均值是：" + maxAverage);
    }

    public static double findMaxAverage(int[] nums, int k) {
        int sum= 0;
        int ms = 0;
        long start = System.currentTimeMillis();                    //用于截取运算的时间有多长时间
        //长度可以分几次
        for(int i = 0; i < nums.length + 1 - k; i++){
            //取出连续长度为k数据之和
            for(int j =0; j < k; j++){
                int s  = i + j;
                sum += nums[s];
            }
            //如果大于或者是第一次数组和则将数据转移，防止数组和出现负数
            if(sum > ms || i == 0){
                ms = sum;
            }
            //数据清零，重新算最大和
            sum = 0;
        }
        long end = System.currentTimeMillis();
        System.out.println("寻找过程使用了：" + (end - start) + "毫秒");
        //返回结果ms
        return (ms * 1.0) / k;
    }
}
